//---------------------------------------------------------------------------------
// Copyright (c) 2011, Microsoft Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//---------------------------------------------------------------------------------

namespace Microsoft.ServiceBus.Samples
{
    using System;
    using System.Management.Automation;

    [Cmdlet("Set", "ServiceBusEnvironment")]
    public class SetServiceBusEnvironmentCmdlet : PSCmdlet
    {
        [Parameter(
        Mandatory = false,
        HelpMessage = "Sets the environment to run the cmdlets against")]
        public string Environment
        {
            get;
            set;
        }

        protected override void ProcessRecord()
        {
            switch (this.Environment.ToUpper())
            {
                case "BVT":
                case "INT":
                case "PPE":
                    System.Environment.SetEnvironmentVariable("RELAYENV", this.Environment);
                    break;
                default:
                    System.Environment.SetEnvironmentVariable("RELAYHOST", "servicebus.windows.net");
                    System.Environment.SetEnvironmentVariable("STSHOST", "accesscontrol.windows.net");
                    System.Environment.SetEnvironmentVariable("ACMHOST", "accesscontrol.windows.net");
                    System.Environment.SetEnvironmentVariable("RELAYENV", "CUSTOM");
                    System.Environment.SetEnvironmentVariable("RELAYHTTPPORT", "80");
                    System.Environment.SetEnvironmentVariable("RELAYHTTPSPORT", "443");
                    System.Environment.SetEnvironmentVariable("STSHTTPPORT", "80");
                    System.Environment.SetEnvironmentVariable("STSHTTPSPORT", "443");
                    break;
            }
            
            WriteVerbose(string.Format("Set Environment {0} ", this.Environment));
            Context.ClearContext();
        }
    }
}
